import re
import requests
import json
import base64
from moviepy.editor import *

url = 'https://www.ixigua.com/7100772840722727431?logTag=ae3c08674b32118590bf'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0',
    'cookie': 'MONITOR_WEB_ID=96fd2182-02bd-4a6e-bead-26c4eb24cce2; support_webp=true; support_avif=true; ixigua-a-s=1; ttcid=86926000ce1040c898c0973a3b206b0616; _tea_utm_cache_1300=undefined; __ac_nonce=062b5d02c00044c9dcfad; __ac_signature=_02B4Z6wo00f01kHgVMAAAIDCweKugtCaZgJBwFBAAPLcY9UrgfrAjHJlnHKDlpWSIoOoeoQCURMVQtu.5nQWB0zkpS0Zszr8hHTtj-WdAOYZJ6eOXN4HgYmOIjg.IpU5ZUE.gr9FiCdzwssw2c; tt_scid=QZL44Fb7MDcQSU1ab-jdhZ9mTxz-mdJl7nBwIrTNeqmAZFDV0a6f41SsM2njKO2K5882; ttwid=1%7CUmbnBuxbjcfZDniBCJoJ0g-Y0dq-6X-zG4awoAle3Ug%7C1656082510%7Cc696100f559fb26d23a7b44cf3d9781a9681c8c8255553818fa10befda03c5f8; msToken=mzS4IMYNuVMWrZdg8hnN6TrkkuHbcjfyjV51FzKqfglEDjLaPNNpYLH2DOPl0sAkWMwbHDe4J_Oj-vDyJjLFlcMLTucQ9uNPD_umfaw9DutIP2ddKpo-'
}

response = requests.get(url=url, headers=headers)
response.encoding = 'utf-8'
# print(response.text)
data = re.findall('_SSR_HYDRATED_DATA=(.*?)</script>', response.text)[0]
# 我们要是想要将我们的数据转化成为我们的json数据的话 我们就需要将我们的一些数据 先进行替换 因为我们的一些数据是不能被定义
# null =None undefined null
# json_data = eval(data[0])
# 将我们的 undefined 进行替换成为我们的null 方便我们进行数据的解析
# 这个是将我们的 data替换成为我们的可以进行数据解析的形式(这些数据进行解析之后 我们要将我们的数据进行json格式的转换 之后进行处理)
data = data.replace('undefined', 'null').replace('None', 'null')
json_data = json.loads(data)
video_url = \
    json_data['anyVideo']['gidInformation']['packerData']['video']['videoResource']['dash']['dynamic_video'][
        'dynamic_video_list'][
        -1]['backup_url_1']

# 音频
audio_url = \
    json_data['anyVideo']['gidInformation']['packerData']['video']['videoResource']['dash']['dynamic_video'][
        'dynamic_audio_list'][
        -1]['backup_url_1']

title = \
    json_data['anyVideo']['gidInformation']['packerData']['video']['title']
# 对我们的数据进行解析 将我们的数据进行解密 解密进行处理
title = title.replace(' ', '')
print(video_url)
print(audio_url)
# 这个是我们的解密的工具 将我们的这个工具进行处理即可 解密的工具
# 这个是将我们的音频和我们的视频进行分开进行处理 处理我们的数据
video_url = base64.b64decode(video_url)
audio_url = base64.b64decode(audio_url)
# 书写我们的decode是将我们的数据进行编码 处理 将我们的数据进行b进行处理 的b进行减少
print(video_url.decode())
print(audio_url.decode())

# 保存我们的数据
video_data = requests.get(video_url).content
audio_data = requests.get(audio_url).content
with open('D:\\deleteAnyTime\\爬虫获取的数据\\西瓜视频\\' + title + '.mp4', mode='wb') as f:
    f.write(video_data)

with open('D:\\deleteAnyTime\\爬虫获取的数据\\西瓜视频\\' + title + '.mp3', mode='wb') as f:
    f.write(audio_data)

# 获取到我们的视频的和1我们的音频在我们的数据的保存的位置
video_path = 'D:\\deleteAnyTime\\爬虫获取的数据\\西瓜视频\\' + title + '.mp4'
audio_path = 'D:\\deleteAnyTime\\爬虫获取的数据\\西瓜视频\\' + title + '.mp3'

# 进行我们的数据的保存
# 这里我们需要进行手动进行合并

# 提取音轨
audio = AudioFileClip(audio_path)
# 读入视频
video = VideoFileClip(video_path)
# 将音轨合并到视频中
video = video.set_audio(audio)
# 输出
video.write_videofile(f"{title}(含音频).mp4")
